// const https = require('https');
// const express = require('express')
// var bodyParser = require('body-parser')

// ///测试
// const app = express()
// const port = 3000
// const SQLHelper = require('./SQLHelper')
// ///雪花算法生成id
// const snowflake = require('./snowflake')
// ///
// app.use(express.static('www'))
// ///解析body中间件
// app.use(bodyParser.json({limit:'100mb'}));

// ///登录拦截中间件
// function loginRouter(req,res,next){
//     let token = req.headers.token
//     if(token){
//         SQLHelper(`select * from session where id = ${token}`).then(ret => {
//             if(ret.length){
//                 let session = ret[0]
//                 req.session = {
//                     userId:session.userId,
//                     userName:session.userName
//                 }
//                 next()
//             }else{
//                 res.status(406).send({errorMsg:'当前用户未登录'})
//             }
//         })
//     }else{
//         res.status(405).send({errorMsg:'缺少token，请先进行登录'})
//     }
// }
// ///让初登陆以为的所有小程序接口都先验证登陆
// app.use('/wx',loginRouter)

// const formatTime = date => {
//     const year = date.getFullYear()
//     const month = date.getMonth() + 1
//     const day = date.getDate()
//     const hour = date.getHours()
//     const minute = date.getMinutes()
//     const second = date.getSeconds()

// return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}`
// }


// const formatNumber = n => {
//     n = n.toString()
//     return n[1] ? n : `0${n}`
// }

// ///微信登录
// app.get('/wxlogin', (req, res,next) => {
//     let code = req.query.code
//     let appid = `wxe18ccd7f649e2c47`
//     let secret = `6b7371bdf8933daf6b1f95bb04ef4aeb`
//     https.get(`https://api.weixin.qq.com/sns/jscode2session?appid=${appid}&secret=${secret}&js_code=${code}&grant_type=authorization_code`, (ret) => {
//         ret.on('data', (ret) => {
//             ret = JSON.parse(ret.toString())
//             let openid = ret.openid
//             if(!openid){
//                 res.send({errorMsg: ret.errMsg || '获取openid错误'})
//             }else{
//                 ///查询用户是否已经注册
//                 let queryMember = `select * from member where openId = '${openid}'`
//                 SQLHelper(queryMember).then(membersRet => {
//                     if(membersRet.length){///用户已经存在
//                         ///挂载到req
//                         req.member = membersRet[0]
//                         next()
//                     }else{///用户不存在,使用openid注册用户
//                         SQLHelper(`INSERT INTO member(openId) VALUES('${openid}')`).then(newMember => {
//                             ///注册成功返回新用户信息
//                             SQLHelper(queryMember).then(newMember => {
//                                 ///挂载到req
//                                 req.member = membersRet[0]
//                                 next()
//                             })
//                         })
//                     }
//                 })
//             }
//         });

//     }).on('error', (e) => {
//         console.error(e)
//         res.send({errorMsg:'获取openid错误'})
//     });
// },(req,res) => {
//     let member = req.member
//     let token = snowflake()
//     ///缓存token到session表
//     SQLHelper(`
//     INSERT INTO session(id,userId,userName,inTime,platform) 
//     VALUES(${token},'${member._id}','${member.nickName}','${formatTime(new Date())}','wx')
//     `).then(ret => {
//         res.send({
//             nickName:member.nickName,
//             token,
//             openId:member.openId,
//             avatarUrl:member.avatarUrl,
//             _id:member._id
//         })
//     })
// })

// ///修改用户信息
// app.put('/wx/member',(req,res) => {
//     ///
//     let userInfo = req.body
//     console.log(userInfo,req.query)
//     SQLHelper(`
//     update member 
//     set nickName = '${userInfo.nickName}',avatarUrl = '${userInfo.avatarUrl}'
//     where _id = ${req.session.userId}
//     `).then(ret => {
//         console.log(ret)
//         res.send({})
//     })
// })

// ///获取收获地址列表
// ///memberId 用户ID 必填
// app.get('/wx/address',(req,res) => {
//     if(req.session.userId){
//         SQLHelper(`
//         select * from address where state = 1 and memberId = ${req.session.userId}
//         `).then(ret => {
//             res.send(ret)
//         })
//     }else{
//         res.send({errorMsg:'请传入memberId'})
//     }
// })

// ///获取收获详情
// ///addressId 地址_id 必填
// app.get('/wx/address/detail',(req,res) => {
//     if(req.query.addressId){
//         SQLHelper(`
//         select * from address where _id = ${req.query.addressId}
//         `).then(ret => {
//             res.send(ret.length ? ret[0] : {errorMsg:'未获取到地址详情'})
//         })
//     }else{
//         res.send({errorMsg:'请传入addressId'})
//     }
// })

// ///新增收货地址
// ///memberId 用户ID 必填
// ///receiver 收货人 必填
// ///phone 手机号 必填
// ///city 省市区 必填
// ///area 详细地址 非必填
// app.post('/wx/address',(req,res) => {
//     if(req.body.receiver &&  req.body.phone && req.body.city){
//         SQLHelper(`
//         INSERT INTO address(state,memberId,receiver,phone,city,area) 
//         VALUES(1,'${req.session.userId}','${req.body.receiver}','${req.body.phone}','${req.body.city}','${req.body.area || ''}')
//         `).then(ret => {
//             res.send(ret)
//         })
//     }else{
//         res.send({errorMsg:'传入参数错误'})
//     }
// })

// ///修改收货地址
// ///addressId 地址_id 必填
// ///receiver 收货人 非必填
// ///phone 手机号 非必填
// ///city 省市区 非必填
// ///area 详细地址 非必填
// app.put('/wx/address',(req,res) => {
//     if(req.body.addressId){
//         ///需要修改的项
//         let updateKey = ['receiver','phone','city','area']
//         let updateValues = []
//         for(let i = 0; i < updateKey.length; i ++){
//             let key = updateKey[i],value = req.body[key]
//             if(value) updateValues.push(`${key}='${value}'`)///判断哪些项需要修改
//         }
//         SQLHelper(`UPDATE address set ${updateValues.join(',')} WHERE _id = ${req.body.addressId}`).then(ret => {
//             res.send(ret)
//         })
//     }else{
//         res.send({errorMsg:'传入参数错误'})
//     }
// })

// ///修改为默认地址
// ///addressId 主码_id 必填
// ///memberId 用户_id 必填
// ///isDefault 是否默认 非必填
// app.put('/wx/address/default',(req,res) => {
//     let addressId = req.body.addressId,memberId = req.session.userId,isDefault = req.body.isDefault == 1 ? 1 : 0
//     if(addressId && memberId){
//         if(isDefault == 1){///设置默认地址
//             ///取消其他默认地址
//             SQLHelper(`
//             UPDATE address 
//             set isDefault = 0 
//             WHERE isDefault = 1 AND memberId = ${memberId}
//             `).then(ret => {
//                 SQLHelper(`
//                 UPDATE address 
//                 set isDefault = 1 
//                 WHERE _id = ${addressId}
//                 `).then(ret => {
//                     res.send(ret)
//                 })
//             })
//         }else{///取消默认地址
//             SQLHelper(`
//             UPDATE address 
//             set isDefault = 0 
//             WHERE _id = ${addressId}
//             `).then(ret => {
//                 res.send(ret)
//             })
//         }
//     }else{
//         res.send({errorMsg:'传入参数错误'})
//     }
// })


// ///删除地址 逻辑删除
// ///addressId 主码_id 必填
// app.delete('/wx/address',(req,res) => {
//     let addressId = req.body.addressId
//     if(addressId){
//         SQLHelper(`
//         UPDATE address 
//         set state = 0 
//         WHERE _id = ${addressId}
//         `).then(ret => {
//             res.send(ret)
//         })
//     }else{
//         res.send({errorMsg:'传入参数错误'})
//     }
// })

// app.listen(port, () => {
//   console.log(`Example app listening on port ${port}`)
// })













// // let env = process.argv[2] || '--dev'
// // console.log('hello word')
// const http = require('http');
// const https = require('https');
// const express = require('express');
// var bodyParser = require('body-parser')

// const app = express()
// const port = 3000
// const SQLHelper = require('./SQLHelper');
// const { application } = require('express');
// const req = require('express/lib/request');
// //  let SQLHelper = require('./SQLHelper')
// // SQLHelper('select * from product').then(ret =>{
// //     console.log('I am mysql:',ret)
// // })

// app.use(express.static('www'))
// //解析body中间件
// app.use(bodyParser.json({limit:'100mb'}));

// let tokens = {}

// app.get('/wx/login', (req, res) => {
  
//   let code = req.query.code
//   let appid = `wxe18ccd7f649e2c47`
//   let secret = `6b7371bdf8933daf6b1f95bb04ef4aeb`
//   https.get(`https://api.weixin.qq.com/sns/jscode2session?appid=${appid}&secret=${secret}&js_code=${code}&grant_type=authorization_code`,(ret) => {

//   ret.on('data', (ret) => {
//       ret = JSON.parse(ret.toString())
//       let openid = ret.openid
//       if(!openid){
//           res.send({errorMsg:ret.errMsg || '获取openid错误'})
//       }else{
//           let token = new Date().getTime()
//           let queryMember = `select * from member where openId ='${openid}'`
//           SQLHelper(queryMember).then(memberSRet =>{
//               if(memberSRet.length){//用户已存在

//                     let member = memberSRet[0]
//                     tokens[token] = member
//                     member.token = token
//                     res.send(member)
//               }else{//用户不存在，使用openid注册用户
//                   SQLHelper(` INSERT INTO member(openId) VALUES('${openid}') `).then(newMember =>{
//                       //注册成功返回新用户信息
//                         SQLHelper(queryMember).then(newMember =>{
//                             let member = memberSRet[0]
//                             tokens[token] = member
//                             member.token = token
//                             res.send(member)
//                         })
//                   })
//               }
//           })
//       }
    
//    });
 
//    }).on('error', (e) => {
//       console.error(e);
//       res.send({errorMsg:'获取openid错误'})
//   });
// })

//  //修改用户信息
//  app.put('/wx/member',(req,res)=>{
//      let userInfo = req.body
//      console.log(userInfo,req.query)
//      SQLHelper(`
//      update member
//      set nickName = '${userInfo.nickName}',avatarUrl = '${userInfo.avatarUrl}'
//      where _id = ${userInfo._id}
//      `).then(ret =>{
//          console.log(ret)
//          res.send({})
//      })
//  })

//  //获取收获地址列表  memberId 用户Id必填
//     //  //通过token获取session
//     //  let session = tokens[req.headers.token]
//  app.get('/wx/address',(req,res)=>{
//      let session = tokens[req.headers.token]
//      let memberId = session._id
//     if(memberId){
//         SQLHelper(`
//         select * from address where state=1 and memberId = ${memberId}
//         `).then(ret =>{
//             res.send(ret)
//         })
//     }else{
//         res.send({errorMsg:'请传入memberId'})
//     }

//  })
// //获取地址的详情
// //addressId 地址_id 必填
// app.get('/wx/address/detail',(req,res) => {
//     if(req.query.addressId){
//         SQLHelper(`
//         select * from address where _id = ${req.query.addressId}
//         `).then(ret => {
//             res.send(ret.length ? ret[0] : {errorMsg:'未获取到地址详情'})
//         })
//     }else{
//         res.send({errorMsg:'请传入addressId'})
//     }
// })

// //修改收货地址--保存改的收货地址 
// // addressId 地址 必填
// // receiver 收货人 非必填
// // phone 必填
// // city 省市区 必填
// //area 详细地址 非必填
// app.put('/wx/address',(req,res) => {
//     if(req.body.addressId){
//         ///需要修改的项
//         let updateKey = ['receiver','phone','city','area']
//         let updateValues = []
//         for(let i = 0; i < updateKey.length; i ++){
//             let key = updateKey[i],value = req.body[key]
//             if(value) updateValues.push(`${key}='${value}'`)///判断哪些项需要修改
//         }
//         SQLHelper(`UPDATE address set ${updateValues.join(',')} WHERE _id = ${req.body.addressId}`).then(ret => {
//             res.send(ret)
//         })
//     }else{
//         res.send({errorMsg:'传入参数错误'})
//     }
// })

// //新增收货地址 post delete方法 存在body里面
// // memberId  用户Id 必填
// // receiver 收货人 必填
// // phone 必填
// // city 省市区 必填
// //area 详细地址 非必填
//  app.post('/wx/address',(req,res)=>{
//     if(req.body.memberId && req.body.receiver && req.body.phone && req.body.city){
//         SQLHelper(`
//            INSERT INTO address(state,memberId,receiver,phone,city,area)
//            VALUES('1','${req.body.memberId}','${req.body.receiver}','${req.body.phone}','${req.body.city}','${req.body.area || ''}')
//         `).then(ret =>{
//             res.send(ret)
//         })
//     }else{
//         res.send({errorMsg:'传入参数错误'})
//     }

//  })


//  //修改默认地址
//  //addressId 主码_id 必填
//  //memberId 用户id 必填
//  //isDefault 是否默认 非必填
// app.put('/wx/address/default',(req,res) =>{
//     let addressId = req.body.addressId,memberId=req.body.memberId,isDefault=req.body.isDefault== 1 ? 1 :0
//     if(addressId && memberId){
//         if(isDefault ==1){//设置默认地址
//             //取消其他默认地址
//             SQLHelper(`
//               UPDATE address
//               set isDefault = 0
//               WHERE isDefault = 1 AND memberId = '${memberId}'
//             `).then(ret =>{
//                 SQLHelper(`
//                 UPDATE address
//                 set isDefault =1
//                 WHERE _id = '${addressId}'
//                 `).then(ret=>{
//                        res.send(ret)
//                 })
//             })
            
//         }else{//取消默认地址
//             SQLHelper(`
//             UPDATE address
//             set isDefault =0
//             WHERE _id = '${addressId}'
//             `).then(ret=>{
//                    res.send(ret)
//             })
//         }
//     }else{
//         res.send({errorMsg:'传入参数错误'})
//     }
// })

// //删除地址 逻辑删除让State=0
// //addressId 主码_id 必填
// app.delete('/wx/address',(req,res)=>{
//     let addressId = req.body.addressId
//     if(addressId){
//         SQLHelper(`
//         update address
//         set state = 0
//         where _id = '${addressId}'
//         `).then(ret =>{
//             res.send(ret)
//         })
//     }else{
//         res.send({errorMsg:'传入参数错误'})
//     }
// })


// app.listen(port, () => {
//   console.log(`Example app listening on port ${port}`)
// })